package uoc.biblioteca.struts.action;

import java.io.File;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import uoc.biblioteca.struts.form.StrutsUploadAndSaveForm;

/**
* @author Amit Gupta
* @Web http://www.roseindia.net
* @Email struts@roseindia.net
*/

/**
 * Struts File Upload Action Form.
 *
*/
public class StrutsUploadAndSaveAction extends Action
{
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception{
    
	  	StrutsUploadAndSaveForm myForm = (StrutsUploadAndSaveForm)form;

        // Process the FormFile
        FormFile myFile = myForm.getTheFile();
        String contentType = myFile.getContentType();
        
        //Get the file name
        String fileName    = myFile.getFileName();
        //int fileSize       = myFile.getFileSize();
        byte[] fileData    = myFile.getFileData();
        
        //Get the servers upload directory real path name
        //String filePath = getServlet().getServletContext().getRealPath("/") +"upload";
        String filePath = (String) request.getSession().getAttribute("pathUpload");      
        
        
        /* Save file on the server */
	    if(!fileName.equals("")){  
	        //Create file
	        File fileToCreate = new File(filePath, fileName);
	        
	        //If file does not exists create file                      
	        if(!fileToCreate.exists()){
	          FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
	          fileOutStream.write(myFile.getFileData());
	          fileOutStream.flush();
	          fileOutStream.close();
	        }  
	    }
    
	    //Set file name to the request object
	    request.setAttribute("fileName",fileName);
      
        return mapping.findForward("success");
  }
} 
